import paramiko

'''
思路：使用paramiko工具连接服务器，并将执行命令的结果返回给程序，这里我们使用了sshclient方法\
首先定义类，构造函数中传入了需要用到的属性 账号信息，定义op方法实现执行命令功能。
'''
class sshd():
	def __init__(self,hostname,passwd,port=22,username='root'): # 定义函数传入连接远程用到的属性
		self.ssh = paramiko.SSHClient() # 调用sshclient方法
		self.hostname=hostname          # 转换属性
		self.port = port
		self.username = username
		self.passwd = passwd
	def op(self,cmd):
		self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 允许连接不在know_hosts里的主机
		self.ssh.connect(hostname=self.hostname,
				port=self.port,
				username=self.username,
				password=self.passwd)
		stdin, stdout, stderr = self.ssh.exec_command(cmd)
		self.stdin = stdin
		self.stdout= str(stdout.read(),encoding='utf-8') #将结果返回并解码
		self.stderr= str(stderr.read(),encoding='utf-8')
		self.ssh.close()
		if self.stdout:
			return self.stdout
		else:
			return self.stderr
	def __str__(self):
		return 'QianFeng cloud computing testing'
if __name__ == '__main__':
	aa = sshd(hostname='172.16.147.151',passwd='1')
	s = aa.op('ls /root')
	print(s,end="")
